Pierwszym co należy zrobić przed przystąpieniem do uczenia implementacji algorytmów uczenia maszynowego jest przejrzenie datasetu. Korzystając z poznanych wcześniej bibliotek możemy użyć następujących komend:
print(pandas_dataframe.isnull().sum())
# Wyliczenie macierzy korelacji
corr = pandas_dataframe.corr()
# Przygotowanie wykresu i wyświetlenie go (wymaga importowania seaborn i matplotlib)
plt.figure()
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Correlation Matrix')
plt.show()
pandas_dataframe['column_name'].unique()
pandas_dataframe['column_name'].plot.hist(bins=5, color='red', edgecolor='black')
Wartości odstające, zwane również outliers, to wartości, które znacznie różnią się od reszty danych. W rezultacie mogą one niekorzystnie wpływać na wyniki analizy danych i modele uczenia maszynowego poprzez:
W jaki sposób można sobie poradzić, jeżeli w danych występują wartości odstające:
Najprostszą metodą identyfikacji wartości odstających jest użycie reguły rozstępu międzykwartylowego (IQR)[1].
Implementacja identyfikacji wartości odstających i winsoryzacji oraz filtrowania znajduje się poniżej:
import pandas as pd
import numpy as np
# Utworzenie dataframe
data = {'Wartość': [10, 12, 14, 15, 100, 13, 14, 16, 12, 13, 11, 110]}
df = pd.DataFrame(data)
# 1. Obliczenie Q1 (pierwszego kwartylu) i Q3 (trzeciego kwartylu)
Q1 = df['Wartość'].quantile(0.25)
Q3 = df['Wartość'].quantile(0.75)
IQR = Q3 - Q1 # Rozstęp międzykwartylowy
# 2. Definiowanie granic dla wartości odstających
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 3. Usunięcie danych odstających
df_no_outliers = df[(df['Wartość'] >= lower_bound) & (df['Wartość'] <=
upper_bound)]
# 4. Winsoryzacja - zastępowanie outlierów wartościami granicznymi
df_winsorized = df.copy()
df_winsorized['Wartość'] = np.where(df_winsorized['Wartość'] > upper_bound,
upper_bound, np.where(df_winsorized['Wartość'] < lower_bound,
lower_bound, df_winsorized['Wartość']))
Przejdź do kolejnego zagadnienia (Brakujące dane) lub kliknij tutaj, aby wrócić do strony głównej tematu.